package com.example.uCenter.common;

import com.alibaba.fastjson.JSONObject;
import com.zhenzi.sms.ZhenziSmsClient;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;

/**
 * 发送验证码
 */
public class SendCode {
    // 短信平台相关参数
    private static final String apiUrl = "https://sms_developer.zhenzikj.com";
    // 榛子云系统上获取
    private static final String appId = "112226";
    private static final String appSecret = "1a7b6b6a-bd41-4aa9-9b99-e646a5ae9a1c";

    public String findSendCode(String phoneNum) {
        try {
            System.out.println("获取到的数据:" + phoneNum);
            // 短信发送需要的参数是json类型
            JSONObject json = null;
            // 随机6位生成验证码
            String code = String.valueOf(ThreadLocalRandom.current().nextInt(100000, 1000000));
            // 将验证码通过榛子云接口发送至手机
            ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret);
            // 参数类型
            Map<String, Object> params = new HashMap<String, Object>();
            // 前台输入的手机号
            params.put("number", phoneNum);
            // 这个模板id对应的是榛子云个人中心的模板id
            params.put("templateId", 10196);
            // 参数占位符,不同的模板有不同的参数个数 目前用的模板有两个参数
            String[] templateParams = new String[2];
            // 第一个参数 随机生成的六位验证码
            templateParams[0] = code;
            // 第二个参数 x分钟
            templateParams[1] = "5";
            // 把参数占位符放在整体参数中
            params.put("templateParams", templateParams);
            // 执行发送短信
            String result = client.send(params);
            System.out.println(result);
            json = JSONObject.parseObject(result);
            // 发送短信失败
            if (json.getIntValue("code") != 0) {
                return null;
            }
            // 将验证码存到session中,同时存入创建时间
            // 以json存放，这里使用的是阿里的fastjson
            // json = new JSONObject();
            // json.put("memPhone",memPhone);
            // json.put("code",code);
            // json.put("createTime",System.currentTimeMillis());
            // 将认证码存入SESSION
            // httpSession.setAttribute("code",json);
            return code;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}


